#include <iostream>
#include <ctemplate/template.h>
#include <string>
using namespace std;
int main()
{
    std::string in_html = "./text.html";
    std::string value = "这是一个测试结果";

    //数据字典，形成数据字典
    ctemplate::TemplateDictionary root("text"); //类似于unorder_map<,> text;
    root.SetValue("key", value);

    //1. 获取网页的内容
    //获取被渲染网页对象
    ctemplate::Template *tpl = ctemplate::Template::GetTemplate(in_html, ctemplate::DO_NOT_STRIP);

    //添加字典到网页数据中
    std::string out_html;
    tpl->Expand(&out_html, &root);

    //完成渲染
    std::cout << out_html << std::endl;
    return 0;
}






// #include <iostream>
// #include <sys/time.h>
// #include <sys/resource.h>
// #include <unistd.h>
// #include <signal.h>
// #include<jsoncpp/json/json.h>
// #include <boost/algorithm/string.hpp>
// #include <vector>
// #include <string>


// int main()
// {
//     std::vector<std::string> target;
//     const std::string str = "1     判断回文数 简单 1 30000";
//     const std::string sep= " ";
//     //, boost::algorithm::token_compress_on是否进行压缩，比如有多个sep的时候
//     //如果不需要压缩, boost::algorithm::token_compress_off
//     boost::split(target, str, boost::is_any_of(sep), boost::algorithm::token_compress_on);
//     for (auto &s : target)
//     {
//         std::cout << s << std::endl;
//     }
//     return 0;
//     // //序列化的工作
//     // //将结构化数据转换为一个字符串
//     // //Value是一个json的中间类，可以填充KV值
//     // Json::Value root;
//     // root["code"] = "text.c";
//     // root["who"] = "root";
//     // root["age"] = "19";

//     // // Json::StyledWriter writer;
//     // Json::FastWriter writer;
//     // std::string str = writer.write(root);
//     // std::cout << str << std::endl;
//     // return 0;
// }



// void handler(int signo)
// {
//     std::cout << "signal:" << signo << std::endl;
//     exit(1);
// }
// int main()
// {
//     for (int i = 1; i <= 31; i++)
//     {
//         signal(i, handler);//捕捉信号
//         //6) SIGABRT是6号信号
//     }
//     //资源不足，导致OS终止进程，是通过信号终止的
//     // //限制累计时长
//     // struct rlimit r;
//     // r.rlim_cur = 1;
//     // r.rlim_max = RLIM_INFINITY; //最高无限制
//     // setrlimit(RLIMIT_CPU, &r);
//     // while (1);

//     // 限制内存大小
    
//     int count = 0;
//     struct rlimit r;
//     r.rlim_cur = 1024 * 1024 * 20; //20M
//     r.rlim_max = RLIM_INFINITY;
//     setrlimit(RLIMIT_AS, &r);
//     while (true)
//     {
//         int *p = new int[1024 * 1024];
//         count++;
//         std::cout << "count: " << count << std::endl;
//         sleep(1);
//     }
//     return 0;
// }